object tp;
#ifdef __THIS_PLAYER_IN_CALL_OUT__
#define TPIC ASSERT(this_player() == tp)
#else
#define TPIC
#endif

int called;

void no_args()
{
	called++;
	TPIC;
}

void one_arg(int x)
{
	called++;
	TPIC;
	ASSERT(x == 1);
}

void two_arg(int x, int y)
{
	called++;
	TPIC;
	ASSERT(x == 1);
	ASSERT(y == 2);
}

void finish()
{
	ASSERT(called == 6);
}

void do_tests()
{
	mixed calls, call;

	tp = this_player();
	called = 0;
	call_out( (: no_args :), 1);
	call_out("no_args", 2);
	call_out( (: one_arg, 1 :), 3);
	call_out("one_arg", 4, 1);
	call_out( (: two_arg, 1 :), 5, 2);
	call_out("two_arg", 6, 1, 2);
	call_out("finish", 10);

	calls = call_out_info();
foreach(call in calls)
{
	ASSERT(objectp(call[0]));
	ASSERT(stringp(call[1]));
	ASSERT(intp(call[2]));
}
}
